1. Field of the Invention
The present invention relates to a technology of an automatic test of web application software conducted in developing a web application system.
2. Description of the Related Art
Conventionally, a test on web application software has been carried out by such a method that a tester visually checks output items while operating a web browser, or writes a testing program and checks output response to an input request in the program.
In the method by such visual check, the tester writes down processes to execute, input values, and expected values in a test specification, and manually enters the input values one by one according to the test specification to execute the processes. The tester determines on whether the test is successful or unsuccessful by visually comparing an output result displayed on a screen with an expected value written in the test specification. Usually, the test specification includes no description of a place on the screen where the output result is displayed. The tester, therefore, specifies the place of result display by his or her own judgment.
Meanwhile, a method combining the techniques disclosed in Jakarta Cactus, [online] searched on Oct. 10, 2006, Internet <URL: http://jakarta.apache.org/cactus>) and Httpunit, [online] searched Oct. 10, 2006, Internet <URL: http://httpunit.sourceforge.net/>) has been widely known as a method using a testing program. According to this method, a tester makes a hyper text transfer protocol (HTTP) request following rules specified at each tool, and sends the request to a web server provided with web application software. The web server sends an HTTP response, which is a result of processing by the web application software, back to the tester that then determines on whether the test is successful or unsuccessful by analyzing the HTTP response in the testing program.
This method using the testing program has an advantage that the same tests can be automatically conducted once the testing program has been written. In carrying out a regression test, where a test once conducted is conducted again, a method in which a the test is automatically carried out at re-execution in such a way that an HTTP response received at the first test is recorded in a log format and an HTTP response obtained at the retest is checked with the recorded log.
Although the above method by the visual check makes writing of a test specification relatively easy, the method invites a risk of overlooking a difference between an output result and an expected value when they do not match because of dependency on manual operation. For example, the tester may have a difficulty in quickly finding the location of the output result on the screen and spend much time to identify the location, and may even fail to recognize the actual output place of the result.
Besides, when the method by the visual check is employed for a regression test requiring repetition of the same tests, greater manpower is required for each execution of the test. This leads to less efficiency and longer period of the test.
In the above method using a testing program, identifying the position of appearance of an output item, which is a test subject, on an HTTP response is even more difficult than the case of the method by the visual check.
If position information on an output item is written precisely in a testing program to facilitate visual check, a small design change results in a necessity of rewriting the testing program, thereby increasing costs in modification of a specification.
When a bug is found in a testing program itself, what matters is the reliability of the test. At present, however, no means for proving a test to be bug-free has been suggested.
In addition, the above method of automatic re-execution of a test through log recording, which is employed for a regression test, etc., cannot be achieved completely automatically, unless an HTTP response at the first test and that at the retest match exactly, except the header.
For example, when web application software includes an output item changing its contents at every test, such as “reception date”, a change in the item contents causes inconsistency between a response at a retest and a response log from the first test. As a result, a test result is considered to be unsuccessful.